39#ifdef PREINIT_SUPPORTED
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_i2c_master.h"
52#include "drv_spi_master.h"
75#define ACCEL23_REG_EXT_CLK_CFG 0x08
76#define ACCEL23_REG_PIN_CTRL 0x0C
77#define ACCEL23_REG_WAKE_UP_DUR_EXT 0x0E
78#define ACCEL23_REG_WHO_AM_I 0x0F
79#define ACCEL23_REG_CTRL1 0x10
80#define ACCEL23_REG_CTRL2 0x11
81#define ACCEL23_REG_CTRL3 0x12
82#define ACCEL23_REG_CTRL4 0x13
83#define ACCEL23_REG_CTRL5 0x14
84#define ACCEL23_REG_FIFO_CTRL 0x15
85#define ACCEL23_REG_FIFO_WTM 0x16
86#define ACCEL23_REG_INTERRUPT_CFG 0x17
87#define ACCEL23_REG_SIXD 0x18
88#define ACCEL23_REG_WAKE_UP_THS 0x1C
89#define ACCEL23_REG_WAKE_UP_DUR 0x1D
90#define ACCEL23_REG_FREE_FALL 0x1E
91#define ACCEL23_REG_MD1_CFG 0x1F
92#define ACCEL23_REG_MD2_CFG 0x20
93#define ACCEL23_REG_WAKE_UP_SRC 0x21
94#define ACCEL23_REG_TAP_SRC 0x22
95#define ACCEL23_REG_SIXD_SRC 0x23
96#define ACCEL23_REG_ALL_INT_SRC 0x24
97#define ACCEL23_REG_STATUS 0x25
98#define ACCEL23_REG_FIFO_STATUS1 0x26
99#define ACCEL23_REG_FIFO_STATUS2 0x27
100#define ACCEL23_REG_OUT_X_L 0x28
101#define ACCEL23_REG_OUT_X_H 0x29
102#define ACCEL23_REG_OUT_Y_L 0x2A
103#define ACCEL23_REG_OUT_Y_H 0x2B
104#define ACCEL23_REG_OUT_Z_L 0x2C
105#define ACCEL23_REG_OUT_Z_H 0x2D
106#define ACCEL23_REG_OUT_T_AH_QVAR_L 0x2E
107#define ACCEL23_REG_OUT_T_AH_QVAR_H 0x2F
108#define ACCEL23_REG_AH_QVAR_CFG 0x31
109#define ACCEL23_REG_SELF_TEST 0x32
110#define ACCEL23_REG_I3C_IF_CTRL 0x33
111#define ACCEL23_REG_EMB_FUNC_STATUS_MAINPAGE 0x34
112#define ACCEL23_REG_FSM_STATUS_MAINPAGE 0x35
113#define ACCEL23_REG_MLC_STATUS_MAINPAGE 0x36
114#define ACCEL23_REG_SLEEP 0x3D
115#define ACCEL23_REG_EN_DEVICE_CONFIG 0x3E
116#define ACCEL23_REG_FUNC_CFG_ACCESS 0x3F
117#define ACCEL23_REG_FIFO_DATA_OUT_TAG 0x40
118#define ACCEL23_REG_FIFO_DATA_OUT_X_L 0x41
119#define ACCEL23_REG_FIFO_DATA_OUT_X_H 0x42
120#define ACCEL23_REG_FIFO_DATA_OUT_Y_L 0x43
121#define ACCEL23_REG_FIFO_DATA_OUT_Y_H 0x44
122#define ACCEL23_REG_FIFO_DATA_OUT_Z_L 0x45
123#define ACCEL23_REG_FIFO_DATA_OUT_Z_H 0x46
124#define ACCEL23_REG_FIFO_BATCH_DEC 0x47
125#define ACCEL23_REG_TAP_CFG0 0x6F
126#define ACCEL23_REG_TAP_CFG1 0x70
127#define ACCEL23_REG_TAP_CFG2 0x71
128#define ACCEL23_REG_TAP_CFG3 0x72
129#define ACCEL23_REG_TAP_CFG4 0x73
130#define ACCEL23_REG_TAP_CFG5 0x74
131#define ACCEL23_REG_TAP_CFG6 0x75
132#define ACCEL23_REG_TIMESTAMP0 0x7A
133#define ACCEL23_REG_TIMESTAMP1 0x7B
134#define ACCEL23_REG_TIMESTAMP2 0x7C
135#define ACCEL23_REG_TIMESTAMP3 0x7D
153#define ACCEL23_WHO_AM_I 0x47
159#define ACCEL23_CTRL1_SMART_POWER_EN 0x80
160#define ACCEL23_CTRL1_INT1_ON_RES 0x40
161#define ACCEL23_CTRL1_SW_RESET 0x20
162#define ACCEL23_CTRL1_IF_ADD_INC 0x10
163#define ACCEL23_CTRL1_DRDY_PULSED 0x08
164#define ACCEL23_CTRL1_WU_X_EN 0x04
165#define ACCEL23_CTRL1_WU_Y_EN 0x02
166#define ACCEL23_CTRL1_WU_Z_EN 0x01
172#define ACCEL23_CTRL5_ODR_PWR_DOWN 0x00
173#define ACCEL23_CTRL5_ODR_ULP_1_6_HZ 0x10
174#define ACCEL23_CTRL5_ODR_ULP_3_HZ 0x20
175#define ACCEL23_CTRL5_ODR_ULP_25_HZ 0x30
176#define ACCEL23_CTRL5_ODR_6_HZ 0x40
177#define ACCEL23_CTRL5_ODR_12_5_HZ 0x50
178#define ACCEL23_CTRL5_ODR_25_HZ 0x60
179#define ACCEL23_CTRL5_ODR_50_HZ 0x70
180#define ACCEL23_CTRL5_ODR_100_HZ 0x80
181#define ACCEL23_CTRL5_ODR_200_HZ 0x90
182#define ACCEL23_CTRL5_ODR_400_HZ 0xA0
183#define ACCEL23_CTRL5_ODR_800_HZ 0xB0
184#define ACCEL23_CTRL5_ODR_ONE_SHOT_INT2 0xE0
185#define ACCEL23_CTRL5_ODR_ONE_SHOT_IFACE 0xF0
186#define ACCEL23_CTRL5_ODR_MASK 0xF0
187#define ACCEL23_CTRL5_BW_ODR_2 0x00
188#define ACCEL23_CTRL5_BW_ODR_4 0x04
189#define ACCEL23_CTRL5_BW_ODR_8 0x08
190#define ACCEL23_CTRL5_BW_ODR_16 0x0C
191#define ACCEL23_CTRL5_BW_MASK 0x0C
192#define ACCEL23_CTRL5_FS_2_G 0x00
193#define ACCEL23_CTRL5_FS_4_G 0x01
194#define ACCEL23_CTRL5_FS_8_G 0x02
195#define ACCEL23_CTRL5_FS_16_G 0x03
196#define ACCEL23_CTRL5_FS_MASK 0x03
202#define ACCEL23_STATUS_INT_GLOBAL 0x20
203#define ACCEL23_STATUS_DRDY 0x01
209#define ACCEL23_EN_DEVICE_CONFIG_SOFT_PD 0x01
215#define ACCEL23_ODR_PWR_DOWN 0
216#define ACCEL23_ODR_ULP_1_6_HZ 1
217#define ACCEL23_ODR_ULP_3_HZ 2
218#define ACCEL23_ODR_ULP_25_HZ 3
219#define ACCEL23_ODR_6_HZ 4
220#define ACCEL23_ODR_12_5_HZ 5
221#define ACCEL23_ODR_25_HZ 6
222#define ACCEL23_ODR_50_HZ 7
223#define ACCEL23_ODR_100_HZ 8
224#define ACCEL23_ODR_200_HZ 9
225#define ACCEL23_ODR_400_HZ 10
226#define ACCEL23_ODR_800_HZ 11
227#define ACCEL23_ODR_ONE_SHOT_INT2 14
228#define ACCEL23_ODR_ONE_SHOT_IFACE 15
234#define ACCEL23_FS_2G 0
235#define ACCEL23_FS_4G 1
236#define ACCEL23_FS_8G 2
237#define ACCEL23_FS_16G 3
243#define ACCEL23_ACCEL_SENS_G_PER_LSB 0.000061
244#define ACCEL23_TEMP_SENS_C_PER_LSB 0.045
245#define ACCEL23_TEMP_OFFSET 25.0
252#define ACCEL23_DEVICE_ADDRESS_0 0x18
253#define ACCEL23_DEVICE_ADDRESS_1 0x19
263#define ACCEL23_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
264#define ACCEL23_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
282#define ACCEL23_MAP_MIKROBUS( cfg, mikrobus ) \
283 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
284 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
285 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
286 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
287 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
288 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
289 cfg.eck = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
290 cfg.it2 = MIKROBUS( mikrobus, MIKROBUS_INT )
accel23_drv_t
Accel 23 Click driver selector.
Definition accel23.h:300
@ ACCEL23_DRV_SEL_I2C
Definition accel23.h:302
@ ACCEL23_DRV_SEL_SPI
Definition accel23.h:301
accel23_return_value_t
Accel 23 Click return value data.
Definition accel23.h:392
@ ACCEL23_NO_DRDY
Definition accel23.h:395
@ ACCEL23_ERROR
Definition accel23.h:394
@ ACCEL23_OK
Definition accel23.h:393
struct accel23_s accel23_t
Accel 23 Click context object.
err_t(* accel23_master_io_t)(struct accel23_s *, uint8_t, uint8_t *, uint8_t)
Definition accel23.h:311
uint8_t accel23_get_it2_pin(accel23_t *ctx)
Accel 23 get IT2 pin function.
err_t accel23_read_reg(accel23_t *ctx, uint8_t reg, uint8_t *data_out)
Accel 23 read register function.
err_t accel23_get_temp(accel23_t *ctx, float *temp)
Accel 23 get temperature function.
void accel23_drv_interface_sel(accel23_cfg_t *cfg, accel23_drv_t drv_sel)
Accel 23 driver interface setup function.
err_t accel23_spi_wake_up(accel23_t *ctx)
Accel 23 SPI wake-up function.
err_t accel23_check_accel_drdy(accel23_t *ctx)
Accel 23 check data ready function.
err_t accel23_set_fsr(accel23_t *ctx, uint8_t fsr)
Accel 23 set full-scale range function.
err_t accel23_get_data(accel23_t *ctx, accel23_data_t *data_out)
Accel 23 get all sensor data function.
err_t accel23_default_cfg(accel23_t *ctx)
Accel 23 default configuration function.
err_t accel23_sw_reset(accel23_t *ctx)
Accel 23 software reset function.
err_t accel23_write_reg(accel23_t *ctx, uint8_t reg, uint8_t data_in)
Accel 23 write register function.
err_t accel23_check_communication(accel23_t *ctx)
Accel 23 check communication function.
err_t accel23_set_odr(accel23_t *ctx, uint8_t odr)
Accel 23 set output data rate function.
err_t accel23_get_accel(accel23_t *ctx, accel23_axes_t *accel)
Accel 23 get acceleration function.
err_t accel23_init(accel23_t *ctx, accel23_cfg_t *cfg)
Accel 23 initialization function.
void accel23_cfg_setup(accel23_cfg_t *cfg)
Accel 23 configuration object setup function.
err_t accel23_write_regs(accel23_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Accel 23 write registers function.
void accel23_set_eck_pin(accel23_t *ctx, uint8_t state)
Accel 23 set ECK pin function.
err_t accel23_read_regs(accel23_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Accel 23 read registers function.
This file contains SPI specific macros, functions, etc.
Accel 23 Click axes data structure.
Definition accel23.h:368
float y
Definition accel23.h:370
float x
Definition accel23.h:369
float z
Definition accel23.h:371
Accel 23 Click configuration object.
Definition accel23.h:342
accel23_drv_t drv_sel
Definition accel23.h:359
pin_name_t it2
Definition accel23.h:350
pin_name_t eck
Definition accel23.h:349
uint32_t i2c_speed
Definition accel23.h:352
spi_master_chip_select_polarity_t cs_polarity
Definition accel23.h:357
pin_name_t sck
Definition accel23.h:347
spi_master_mode_t spi_mode
Definition accel23.h:356
pin_name_t mosi
Definition accel23.h:346
uint32_t spi_speed
Definition accel23.h:355
pin_name_t scl
Definition accel23.h:343
pin_name_t miso
Definition accel23.h:345
pin_name_t sda
Definition accel23.h:344
pin_name_t cs
Definition accel23.h:348
uint8_t i2c_address
Definition accel23.h:353
Accel 23 Click data structure.
Definition accel23.h:380
accel23_axes_t accel
Definition accel23.h:381
accel23_axes_t gyro
Definition accel23.h:382
float temperature
Definition accel23.h:383
Accel 23 Click context object.
Definition accel23.h:318
accel23_drv_t drv_sel
Definition accel23.h:328
spi_master_t spi
Definition accel23.h:324
digital_in_t it2
Definition accel23.h:321
digital_out_t eck
Definition accel23.h:319
i2c_master_t i2c
Definition accel23.h:323
float accel_sens
Definition accel23.h:333
uint8_t slave_address
Definition accel23.h:326
accel23_master_io_t write_f
Definition accel23.h:330
pin_name_t chip_select
Definition accel23.h:327
accel23_master_io_t read_f
Definition accel23.h:331